//package com.znsd.zl.aspect.aspectentity;
//
//import com.alibaba.fastjson.JSONObject;
//import com.fasterxml.jackson.core.JsonProcessingException;
//import com.fasterxml.jackson.databind.ObjectMapper;
//import com.znsd.zl.aspect.annotation.Dict;
//import com.znsd.zl.common.CommonResult;
//import com.znsd.zl.constant.CommonConstant;
//import com.znsd.zl.utils.reflect.ReflectUtil;
//import org.aspectj.lang.ProceedingJoinPoint;
//import org.aspectj.lang.annotation.Around;
//import org.aspectj.lang.annotation.Aspect;
//import org.aspectj.lang.annotation.Pointcut;
//import org.springframework.stereotype.Component;
//import org.springframework.util.StringUtils;
//
//import java.lang.reflect.Field;
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * 别的服务需要使用切面，需要加载公共的模块才能使用 通过ComponentScan 进行加载组件
// * @ClassName DictAspect
// * @Description TODO
// * @Author zhubin
// * @Date 2020/8/11 23:30
// * @Version v1.0
// */
//@Aspect
//@Component
//public class DictAspect {
//
//	// 等待调用 数据字典数据服务feign
////	@Autowired
////	private DictService dictService;
//
//	@Pointcut("execution(public * com.znsd.zl.*..*Controller.*(..))")
//	public void executeService(){
//
//	}
//
//	@Around("executeService()")
//	public Object aroundAdive(ProceedingJoinPoint pjp){
//		Object result = null;
//		try {
//			result = pjp.proceed();
//			this.parseDict(result);
//		} catch (Throwable throwable) {
//			throwable.printStackTrace();
//		}
//		return result;
//	}
//
//	public void parseDict(Object result){
//		if (result instanceof CommonResult) {
//			if (((CommonResult) result).getData() instanceof List) {
//				// 存储替换好的数据
//				List<JSONObject> items = new ArrayList<>();
//				// fastjson 转换对象
//				ObjectMapper mapper = new ObjectMapper();
//
//				for (Object record : (List) ((CommonResult) result).getData()) {
//					String json = "{}";
//					try {
//						json = mapper.writeValueAsString(record);
//					} catch (JsonProcessingException e) {
//						e.printStackTrace();
//					}
//					JSONObject jsonObject = JSONObject.parseObject(json);
//
//					for (Field field : ReflectUtil.allField(record)) {
//						Dict dict = field.getAnnotation(Dict.class);
//						if (dict != null) {
//							String dictType = dict.dictType();
//							String table = dict.table();
//							String column = dict.column();
//							String value = String.valueOf(jsonObject.get(field.getName()));
//							// 查询数据库获取名称
//							Object text = this.getText(dictType, table, column, value);
//							// 添加新的属性到json中
//							jsonObject.put(field.getName() + CommonConstant.DICT_ITEM_TEXT_SUFFIX, text);
//						}
//					}
//					items.add(jsonObject);
//				}
//				((CommonResult) result).setData(items);
//			}
//		}
//	}
//
//	public Object getText(String dictType,String table,String column,String value) {
//		if (StringUtils.isEmpty(value)) {
//			return value;
//		}
//		String[] values = value.split(",");
//		List<String> texts = new ArrayList<>();
//		for (String key : values) {
//			String tempText = null;
//			// 减少空值查询
//			if (StringUtils.isEmpty(key.trim())) { continue; }
//			if (!StringUtils.isEmpty(table)) {
//				// 自定义查询语句
////				tempText = dictService.queryTableDictTextByKey(table,column,dictType,key);
//			} else {
//				// 查询数据字典
////				tempText = dictService.findText(dictType,key);
//			}
//
//			texts.add(tempText);
//		}
//		return texts;
//	}
//
//
//}
